Method for device-to-device pervasive digital output

ABSTRACT

An electronic system and method of pervasive output allow an information apparatus to output data content conveniently to virtually any output device. One method includes establishing a communication channel between the information apparatus and an output device and receiving at the information apparatus over the communication channel an attributes corresponding to the output device. The output device may then be selected at the information apparatus based at least in part on the attributes. The data content is delivered to the output device for rendering.

TECHNICAL FIELD OF INVENTION

[0001] Present invention relates to device synchronization and digitaloutput and, in particular, to providing pervasive output for informationapparatuses.

SUMMARY OF THE INVENTION

[0002] An Information apparatus refers to both stationary computers andmobile computing devices (pervasive devices). Examples of informationapparatuses include without limitation desktop computers, laptopcomputers, palmtop (hand-held) computers, personal digital assistants(PDAs), Internet-enabled cellular phones, smart phones, pagers, Internetappliances, e-books, digital pads, Web pads, and digital capturingdevices (e.g., digital cameras and video cameras). An output device 140may include a fax machine, printer, copier, image or video displaydevice, projector, and an audio output device.

[0003] For simplicity and convenience, hereafter, the followingdescription may refer to an output device as a printer and an outputprocess as printing. However, it should be understood that the termprinter and printing is used as a specific example to simplifydescription or may be one exemplary embodiment. The reference toprinting used here is intended to be applied or extended to the largerscope and definition of output devices and should not be construed asrestricting the scope and practice of present invention.

[0004] Fueled by ever-increasing bandwidth and processing power andever-increasing numbers of wireless mobile devices and availablesoftware applications for pervasive devices, millions of users are orwill be creating, downloading, and transmitting content and informationusing their pervasive computing devices. Unfortunately, the smalldisplay screen of a pervasive device may not provide a good viewingexperience. As a result, there is a need to allow users to easily outputcontent and information from their pervasive computing devices to anyoutput device. People need to output directly and conveniently fromtheir pervasive information apparatus, without depending onsynchronizing with a stationary computer (e.g., desktop personalcomputer) for printing, as an example.

[0005] To illustrate, an information worker at an airport receivinge-mail in his hand-held computer may want to walk up to a nearby printeror fax machine to have his e-mail printed. In addition, the mobileworker may also want to print a copy of his to-do list, appointmentbook, business card, and his flight schedule from his mobile device. Asanother example, a traveler stopping at a convenience store, gasstation, or kiosks may want to print out a copy of the map he justdownloaded from the Internet using his Internet enable wireless phone(information apparatus). In still another example, an individual whojust finished a stock trade or performed an e-commerce transaction usinghis PDA (information apparatus) may want to print out a copy of histransaction confirmation, invoice or receipt. In yet another example, auser who takes a picture with a digital camera may want to easily printit out to a nearby printer.

[0006] Conventionally, an output device (e.g., a printer) is connectedto an information apparatus via a wired connection such as a cable line.A wireless connection is also possible by using, for example, radiocommunication or infrared communication. Regardless of whether theconnection is wired or wireless, a user must first install in theinformation apparatus a printer driver corresponding to a particularprinter model and make. Using a device-dependent or specific driver, theinformation apparatus may process output content or a digital documentinto the printer input space. The printer input space corresponds to thetype of input that a printer understands (herein referred to as printdata). For example, the printer input space or print data may include aprinter-specific input format (e.g., image, graphics, file, dataformat), encoding, page description language, markup language,instructions, protocols or data that can be understood or used by aparticular printer make and model.

[0007] Print data may be proprietary or a published standard or acombination of the two. A printer input space or print data istherefore, in general, device dependent. Different printer models mayspecify their own input, designed or adopted for optimal operation bythe printer manufacturer according to a specification. Consequently,different printers usually require use of specific printer drivers foraccurate printing. A device driver (printer driver in this example) maycontrol, manage, communicate, and output print data to a printer.Sometimes, instead of using a printer or device driver, the devicedriving feature may be included as part of an application software. Theapplication in this example may process the document and communicatedirectly with an output device without utilizing a device driver. Printdata is an output data sent to a printer. However, the term print dataused here is intended to be applied or extended to the larger scope anddefinition of output data which applies to any output devices includingdisplay, projection and audio devices, and this should not be construedas restricting the scope and practice of present invention.

[0008] Installation of a printer driver or application may beaccomplished by, for example, manual installation using a CD or floppydisk supplied by the printer manufacturer. Or alternatively, a user maybe able to download that particular driver or application from anetwork. For a home or office user, this installation process may takeanywhere from several minutes to several hours depending on the type ofdriver and user's sophistication level with computing devices andnetworks. Even with plug-and-play driver installation, the user is stillrequired to execute a multi-step process for each printer. Thisinstallation and configuration process adds a degree of complexity andwork to end-users who may otherwise spend their time doing otherproductive or enjoyable work. Moreover, many unsophisticated users maybe discouraged from adding new peripherals (e.g., printers, scanners,etc.) to their home computers or networks to avoid the inconvenience ofinstallation and configuration. Therefore, there is a need to provide away for a user to more conveniently or easily output digital content toan output device without the inconvenience of manually finding andinstalling new device drivers or printer drivers. Installation ofprinter drivers, if needed, should be more automatic and transparent toend-users.

[0009] In addition, conventional printing methods may pose significantlyhigher challenges and difficulties for mobile device users than for homeand office computer users. The requirement for pre-installation of adevice-dependent driver is in conflict with the concept of mobile(pervasive) computing and output. For example, a mobile user may want toprint e-mail, PowerPoint® presentation documents, web pages, or otherdocuments in an airplane or at an airport, gas station, conveniencestore, kiosk, hotel, conference room, office, home, etc. It is highlyunlikely that the user would find at any of these locations a printer ofthe same make and model as is at the user's base station. Therefore, theuser may have to install and configure a printer driver each time ateach of these locations before printing. Alternatively, it is also not aviable option usually to pre-install all of the possible hundreds, oreven thousands, of printer drivers available to the user's informationapparatus. A mobile information device usually has limited memory andstorage capacity. As a consequence, the user would currently be requiredto install and configure a printer driver each time at each suchdifferent location before printing. Moreover, the user may not want tobe bothered with looking for a driver or downloading it and installingit just to print out one page of email at the airport. This is certainlyan undesirable and discouraging process to promote pervasive or mobilecomputing. Therefore, a more convenient or automated printing solutionis needed so that a user can simply walk up to a printer and easilyprint a digital document without having to install or pre-install aparticular printer driver.

[0010] Network printing may partially solve the above problem in a localarea network (LAN). Network printing was first motivated to allow peopleto share printing resources within a network. Printers are oftenconnected to the network using a network adapter or network card. Printservers may be used to manage print jobs (such as spooling). Differentclients may send print jobs to the print server for queuing,prioritizing and managing. The driver of each networked printer may bestored in the network (for example, in an application server) andavailable for clients to download.

[0011] The above configuration is often used in a local area network(LAN) such as in an office building. An office worker with a mobile orstatic computing device connected to this network may be able to send aprint job to any printer that is connected to the same network. Heeither has the necessary printer drivers pre-installed in his device orhe can download a driver from the LAN before printing to a particularprinter. But once outside of the office building, or meaning outside ofhis wired or wireless network coverage, the office worker can no longerprint to any printer he or she desires.

[0012] In one instance, it has been argued that the idea of localnetwork printing can be further extended to the Internet as the largerand public network. In an ideal situation, every printer and everycomputing device (information apparatus) is connected to the samenetwork, for example the Internet. But in reality, extending networkprinting to a big super-network or the Internet is still unavailable.

[0013] Nevertheless, one drawback of network printing may be highercost. To connect the output devices and information apparatus to thesame network, additional hardware or software may need to be installed.And therefore, the costs of output devices may be raised substantially.In addition to hardware and software costs there are also servicecharges to maintain the connectivity to a large network such as theInternet. Furthermore, a large permanent network infrastructure wouldneed to be built and made available to each location.

[0014] In addition to costs, another drawback of network printing isreliability. Network printing requires perfect function in any part ofthe chain of network hardware, software and services. If any componentof the link is down or not fully functional, for any reason, printingservice may be unavailable, interrupted or result in inaccuracies.

[0015] Finally, another drawback of network printing is the issue ofsecurity. A user does not feel secure if confidential documents orinformation must pass through the entire network before reaching theprinter immediately in front of him or her. There may be the fear thatthe confidential document could be intercepted, viewed, copied or storedwithin any segment of the connected network. There can also be the fearthat the document could actually be printed to a different printerinstead of the intended one. This problem may be caused by, for example,errors in directory service software, a software component that is notup-to-date or corrupted, inconsistent or incompatible software and/orhardware versions, or any combination of human, software, network, orhardware errors. There is also risk when downloading a softwarecomponent (e.g., printer driver) from the network to an informationapparatus. This software component maybe damaged, corrupted or carryinga malicious attack or virus or otherwise modified by hackers. A damagedsoftware component can disrupt or corrupt the user's informationapparatus. Finally, some internal corporate or local networks may rejectunknown documents trying to reach their printers and other outputdevices protected within a firewall. It is therefore more desirable ifthe communication and exchange of information are done locally betweenusers' information apparatus and the selected output device, all withinthe range of the users watchful, and inspecting eyes.

[0016] Accordingly, the present invention provides a convenient methodof digital printing in which a user need not pre-install adevice-dependent printer driver on an information apparatus in order toprint.

[0017] This invention can provide an easy, friendly and convenientprocess for printing. Unlike conventional printing, a user need notmanually install a printer driver from a CD, floppy disk, or download itsomewhere from an existing static network. With the apparatus andprocess of present invention, all the software components, data, orprinter drivers can be loaded to the information apparatus through easyand automatic synchronization process between the information apparatusand a printer having an output controller of present invention. As aresult, a mobile user with an information apparatus equipped with anoutput manager of present invention can print pervasively virtually atany time, anywhere, to any printer.

[0018] Furthermore, this invention can provide a convenient methodallowing users to print to any printer with or without connection to astatic permanent network for both the information apparatus and theoutput device. Through local communication and synchronization directlybetween the information apparatus and the output device, hardware andsoftware installation for static network connectivity may not benecessary. Therefore printing costs may be reduced.

[0019] In addition, this invention can provide a more reliable printingmethod than conventional remote network printing methods or processes.By communicating locally between an information apparatus and an outputdevice, the printing process does not depend on the perfect function ofeach element of a network chain. This chain may include, for example,network connections, network servers, application servers, serviceproviders and application providers. Therefore, the chance of asuccessful printing under present invention is greatly enhanced asprocessing and communication involves fewer elements.

[0020] This invention can further provide a more secure printing processthan conventional network printing processes and methods. Uploading ordownloading data or software components such as a printer driver from anoutput device immediately in front of user provides a more securefeeling than dealing with components from a remote location in thenetwork. Components stored in a large network may be perceived to havemore exposure to tampering (e.g., contaminated with a virus). Anerroneous module or component in the network caused by a human orsoftware or hardware error may also disrupt the function of theinformation apparatus. Furthermore, sending a confidential digitaldocument or print data directly to the printer in front of user providesa more secure feeling than if the document is routed through a largenetwork with a plurality of users and servers. There are greaterpossibilities of the document being intercepted, viewed, copied, storedor finally printed on a wrong printer in conventional network printing.

[0021] In accordance with present invention, an electronic system andmethod of pervasive output allow an information apparatus to outputdigital content conveniently to virtually any output device. Theinformation apparatus may be equipped with a central processing unit,input/output control unit, storage unit, memory unit, and wired orwireless communication unit or adapters. The information apparatuspreferably also includes output manager that may be implemented asapplication software, a client application, or device driver (printerdriver in case of printer). The output manager may include managementand control capabilities with hardware and software components includingfor example one or more communication chipsets residing in its hostinformation apparatus.

[0022] The output manager in the information apparatus may be capable ofcommunicating with, managing and synchronizing data or softwarecomponents with an output device equipped with an output controller ofpresent invention. Examples of output devices include, withoutlimitation, printers, fax machines, copiers, image or video displaydevices, monitors, display screens, projectors, and audio outputdevices.

[0023] The output controller may be a circuit board, card or softwarecomponents residing in an output device. Alternatively, the outputcontroller may be connected externally to an output device as anexternal component or “box.” The output controller may be implementedwith one or a combination of embedded processor, software, firmware,ASIC, DSP, FPGA, system on a chip, special chipsets, among others. Inanother embodiment, the functionality of the output controller may beprovided by application software running on a PC, workstation or serverconnected externally to an output device.

[0024] The output controller may include a processing unit,memory/storage unit and communication adapter unit, among others. Thestorage or memory unit of the output controller may store devicedrivers, software components or objects encapsulating device dependentdata, algorithms, and code. Device dependent data may be, for example,parameters and information about the output device and outputcontroller. Software components and objects may encapsulate for examplecode or executables of algorithms necessary for converting or encodingan image or document description or language into print data or outputdata compatible with a specific output device. The output manager maymanage the process of uploading data and or software components from anoutput controller to an information apparatus in order to, for example,enable the information apparatus to generate and transmit print data oroutput data accurately to the output device or the output controller.

[0025] Output data (or print data in the case where the output device isa printer) may be specific data, instructions, page descriptionlanguage, markup language, graphics and or image file format amongothers. Print data may also be encoded or compressed with one or morecompression or encoding techniques. Furthermore, print data may use oneor more open standards or one or more proprietary techniques andformats, or a combination. Output data (or print data for printers)refers to the electronic data sent from an information apparatus to theoutput device.

[0026] One implementation of a digital content output process of thisinvention includes the following steps.

[0027] 1. A user requests to print a digital content from his/herinformation apparatus.

[0028] 2. The information apparatus detects available output devices bya discovery process.

[0029] 3. The information apparatus exchanges service information withoutput controllers associated with the available output devices in aservice negotiation process. The user may then select one or more outputdevices based on the service information provided.

[0030] 4. The information apparatus communicates with output controllerto identify and upload the necessary components to enable output to aspecific output device as part of a synchronization process. Theuploaded components or data may then be installed or configured in theinformation apparatus.

[0031] 5. The digital content intended for output is processed by one ormore components to be compatible with the output device. The one or morecomponents include the information apparatus with an output manager, anoutput controller and the output device.

[0032] 6. The printer engine or display engine or audio engine generatesfinal output.

[0033] In the output process of present invention, an output managerresiding in the information apparatus may participate in, coordinate andmanage the communication and exchange of information/components betweenits host information apparatus and output controllers.

BRIEF DESCRIPTION OF THE DRAWINGS

[0034]FIG. 1 is a block diagram of an output system that can implementthe process and apparatus of the present invention.

[0035]FIGS. 2A and 2B are block diagrams illustrating exemplaryconfigurations of hardware components of wireless communication units.

[0036]FIG. 3A-3C illustrates various configurations and implementationsof output manager with respect to an information apparatus.

[0037] FIGS. 4A-4F illustrate various configurations and implementationsof output controller with respect to a printer or output device.

[0038]FIG. 5 is a flow diagram of a pervasive output process of thepresent invention.

[0039]FIG. 6 is a flow diagram of an exemplary implementation of servicenegotiation process optionally included in the output process of FIG. 5.

[0040]FIG. 7 is a flow diagram of different possible configuration ofprint job process included in the output process of FIG. 5.

[0041] FIGS. 8A-8G show a series of graphical user interfaces (GUIs)rendered at different times on a display screen of an informationapparatus.

[0042]FIG. 9A-9B is a block diagram of a conventional printing system orprinter.

DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS

[0043]FIG. 1 is a block diagram illustrating exemplary components of anelectronic communication system that may provide an operatingenvironment for the present invention and includes an informationapparatus 100, which is a computing device with processing capability.As illustrated in FIG. 1, examples of information apparatus 100 mayinclude, but are not limited to, a desktop personal computer (PC),laptop computer, palmtop computer, handheld or mobile device, personaldigital assistant (PDA), smart phone, screen phone, set-top box, e-book,Internet pad, digital camera, Internet appliance, pager, etc.

[0044] Information apparatus 100 may contain components (not shown) suchas a processing unit, a memory unit, a storage unit and an input/outputcontrol unit, as are known in the art. Information apparatus 100 mayalso contain an interface (not shown) for interactions with users. Theinterface may be implemented in software or hardware or a combination.Examples of such an interface include, without limitation, a mouse, akeyboard, a touch-sensitive or non-touch-sensitive screen, one or morepush buttons, soft keys, a stylus, a speaker, a microphone, etc.

[0045] An information apparatus 100 may be a dedicated single taskdevice (e.g. email terminal, web terminal, e-book, etc) or ageneral-purpose computing device with multiple features and functions.These multiple functions and features may be implemented by one or moresoftware applications (e.g., applications 302, FIG. 3) installed in theinformation apparatus 100, which may or may not include an operatingsystem. A digital camera 112 equipped with processing capability andfeature sets of the present invention is also an example of aninformation apparatus 100.

[0046] Some information apparatuses 100 (e.g., dedicated devices) may bepre-configured by manufacturers with fixed functionalities and features.Other information apparatuses 100 may allow users to install additionalhardware components and application software (e.g., applications 302,FIG. 3) to expand or change functionality. Examples of functionalitiesand applications of information apparatuses 100 may include, forexample, e-mail, messaging, voice communication, web browsing, imageacquisition, text processing, graphics applications, document or imageediting, and output functionalities, among others.

[0047] Functionalities and feature sets of an information apparatus 100may be implemented in software or hardware or a combination of both.When features are implemented in software, this software may beinstalled by the manufacturer or by users. Application software may beimplemented using embedded software running on embedded processors or itmay run on a specific operating system. Some or all or combinations ofapplications and feature sets may also be implemented in hardware or insilicon. Some functionality or feature sets may be implemented inspecial chip sets and may include one or more or combinations of, forexample, application-specific integrated circuits (ASICs), fieldprogrammable gate arrays (FPGAs), digital signal processors (DSPs),systems on a chip, firmwares, etc.

[0048] Information apparatus 100 may or may not contain an operatingsystem. In an implementation having an operating system, the operatingsystem may provide a variety of application programming interfaces(APIs) or object models (e.g., APIs 300, FIG. 3) for softwareapplications to interface and communicate with device drivers. Devicedrivers in an information apparatus 100 control and communicate withperipheral devices such as printers, copiers, fax machines, displaymonitors, screens, etc. Several different applications can share acommon device driver through the use of APIs or interfaces or objectmodels provided by an operating system, as described below withreference to FIG. 3A. In implementations having no operating system oran operating system that does not support or provide a device driverAPI, each application may have to implement its own device driver or itsown output and communication capability, as described below withreference to FIGS. 3B and 3C. For example, to output a digital documentto a printer, each application may have to implement its ownprinter-specific driving, processing and/or communication capability.

[0049] In one implementation, information apparatus 100 includes anoutput manager 308 (FIGS. 3A-3C), which is typically implemented insoftware. Output manager 308 may be implemented or included in a clientapplication, or as a stand-alone application, or as part of anotherapplication software 302B (FIG. 3B), or in the form of a device driver(e.g., a printer driver, in case of a printer being the output device),which may be invoked, shared and used by one or more applicationsoftware programs 302 (FIGS. 3A-3C).

[0050] One task for output manager 308 is to manage and coordinatecommunication between information apparatus 100 and one or more outputcontrollers 120. Output manager 308 may, for example, implement anopen-standard or a proprietary communication protocol to directly orindirectly interact with, manage, or utilize functionalities provided byhardware components residing in a host information apparatus 100. Suchhardware components may include, for example, a processing unit, amemory unit and communication chipsets (not shown). Output manager 308may include one or more of the following features and functionalities:

[0051] Output manager 308 may communicate and interact with one or moresoftware applications 302 included in a host information apparatus 100to provide pervasive output capability or feature to those softwareapplications 302. The type of information passed from the softwareapplications 302 to the output manager 308 may be, for example, adigital document or digital content data that needs output. In someinstances, application software 302 may invoke or launch the outputmanager 308 as a separate application (as shown in FIG. 3C) or as anintegrated part of the application software (as shown in FIG. 3B).Examples of possible communication and management between output manager308 and application software 302 may include, among others, messages,objects models, instances, procedural calls, program invocation andAPIs, which may or may not be provided by an operating system.

[0052] Output manager 308 may manage and maintain wired or wirelesscommunications with output controller 120. Output manager 308 mayinteract with functionalities implemented by hardware components of itshost information apparatus 100. As an example, the output manager 308may manage and interact with the communication unit in the informationapparatus 100. FIGS. 2A and 2B show an example of communication unitsusing wireless adapters, as described below in greater detail. A usermay interact with the output manager 308 through a user interfaceprovided by output manager 308 through the host information apparatus100.

[0053] Output manager 308 may help discover available output devices140, verify communication connections, identify devices available orcompatible for service, or send or broadcast service requests to one ormore devices.

[0054] Output manager 308 may communicate with output controller 120 toidentify necessary software components, data, or any other devicedependent information or parameters, if any, that need to be uploadedfrom the output controller 120 to the host information apparatus 100 toenable pervasive output. Software components may be, for example, adevice driver, an application, a special code or algorithm, anexecutable object or device dependent data, parameter, information, etc.

[0055] Output manager 308 may coordinate with output controller 120 toupload the necessary components or data from the output controller 120to its host information apparatus 100 so that the user can outputdigital content pervasively to that output controller 120 or itsassociated output device 140.

[0056] Output manager 308 may perform raster image processing operations(e.g. rasterization, color management, half-toning operations) orconvert digital content from its original format into print datacompatible for input to a specific output controller 120 or outputdevice 140. The digital content may be created, stored or received bythe information apparatus 100. For example, an output manager 308 mayconvert digital document information from a certain format or languageinto a specific print data or intermediate format or language such asPostScript, PCL, EMF, XML, TIFF, JPEG, RTL, among others, for output.

[0057] Output manager 308 may coordinate or manage the communicationbetween a host information apparatus 100 and output controller 120 tosend or transmit the print data to the output controller 120.

[0058] Output controller 120

[0059] An output controller 120 may be implemented as software orhardware and may be connected to or integrated within an output device140. Output controllers 120H illustrate hardware implementations in theform of a circuit board or card that is installed or integrated into anoutput device 140, such as a printer, copiers, fax machine, displayscreen among others. In another configuration (not shown), outputcontroller 120 may be implemented as a software application or componentthat is installed or integrated into an output device 140. Outputcontroller 120G illustrates a hardware implementation in the form of anexternal component or “box” that is separately connected to one or moreoutput devices 140.

[0060] Whether externally connected to or internally installed in outputdevice 140, output controller 120 may be implemented with hardware,software, or both, that perform the feature sets and functionalities ofthe output controller 120 described herein. In the case of output device140 being a printer, output controller 120 can also sometimes be calleda printer server. Exemplary configurations and implementations of outputcontroller 120 are described below with reference to FIG. 4.

[0061] As one example, output controller 120 may be implemented as acomputer connected to one or more output devices 140. For example, aconventional PC, workstation or server may serve the purpose of anoutput controller 120. In this case, the functionalities of outputcontroller 120 may be implemented using application software installedin the computer (PC, server, or workstation), with the computerconnected to the output device 140.

[0062] An output controller 120 installed or connected to an outputdevice 140, such as a printer, enables the output device 140 tocommunicate and negotiate services with information apparatus 100. Inone implementation, an information apparatus 100 may communicate with anoutput controller 120 connected to a printer or an output controller 120internally installed within a printer to obtain device dependent data orsoftware components such as device specific printer driver. Anapplication such as an output manager 308 residing in the informationapparatus 100 may install and configure the uploaded components or data,allowing information apparatus 100 to print to that printer directly. Anexample of an output process is described below with reference to FIG.5.

[0063] Functionalities and feature sets of output controller 120 mayinclude one or more of the following:

[0064] Provide service to clients—Output controller 120 may activelysearch for available clients, including information apparatus 100 oroutput manager 308 or other communication units, to which clients'output service could be provided. Alternatively or in combination, anoutput controller 120 may passively wait to be discovered by one or moreclients, including information apparatus 100, to provide output serviceto the client or clients.

[0065] Negotiation of services with information apparatus 100—Outputcontroller 120 may communicate and exchange information with informationapparatus 100 as part of negotiating the output services to be provided.As an example, in communication with an information apparatus 100, anoutput controller 120 may inform the information apparatus 100 of themake, model, identification, version, type of input language, type ofdevice driver software, type of services provided, type of componentsavailable for upload, etc. for a selected output device 140 such as aprinter. As another example, an information apparatus 100 may send oneor more messages to an output controller 120 inquiring about whatsoftware component or data, if any, the information apparatus 100 needsto upload from the output controller 120 to enable output to a specificoutput device 140.

[0066] Provide security functionalities such as authentication andencryption—Authentication is used to prevent unwanted access toservices, while encryption is used to prevent eavesdropping. Securityprocedures may be implemented by software, hardware or a combination ofboth, in various steps and stages of communication between the outputcontroller 120 or the output device 140 and the information apparatus100.

[0067] Payment or transaction management and services—A user may becharged a service fee when, for example, providing output to a printer140 or other output device 140. Output controller 120 may have theability to calculate and process payment according to the servicesrequested by or rendered to a client. Output controller 120 may processpayments in various forms such as cash, E-cash, credit card, debit card,E-card, smart card, virtual cash, etc.

[0068] Storage capability—Output controller 120 may include a memory orstorage unit and may store within it one or more of the following:application software, device or printer driver, software components,device dependent data or parameters, user interfaces, etc. Softwarecomponents or data stored in the output device 140 or the outputcontroller 120 may be uploaded to the information apparatus 100 in orderfor the information apparatus 100 or the output manager 308 to drive theoutput device 140. Software components may be executable or partiallyexecutable programs or data.

[0069] Synchronize with information apparatus 100—After outputcontroller 120 or the output manager 308 in information apparatus 100identifies the components (software component, data, information orparameters) necessary to enable output or printing, the outputcontroller 120 may coordinate with the output manager 308 to upload tothe information apparatus 100 the components stored in a memory orstorage unit of output controller 120.

[0070] Provide management tools—Multiple information apparatuses 100 mayrequest service from the same output device 140 at the same time or atoverlapping times. Management tools such as queuing and spooling ofprint jobs, quality of service, etc. may be provided by the outputcontroller 120.

[0071] As indicated above, output controller 120 may be implemented in avariety of ways and may include hardware, software, or a combination ofthe two. In hardware implementations, for example, output controller 120may include components using one or more of hardware types such as ASIC,DSP, FPGA, firmware, system on a chip, and communication chip set.Output controller 120 may also include embedded processors with softwarecomponents or embedded application software to implement its featuresets, and functionalities. An output controller 120 may or may notcontain an operating system.

[0072] Output controller 120 typically includes a memory or storage unit(ROM, RAM, flash memory, disk drive—not shown), which may store one ormore software applications, software components and data. Some softwareapplications may run in the output controller 120 to perform itsfunctionalities (e.g., communicate with information apparatus 100).

[0073] The memory or storage unit of an output controller 120 may alsostore data and one or more software components that may be available tobe uploaded to or synchronized with an information apparatus 100 duringcommunication with output manager 308. A software component may be adevice driver or complete application software that can run on theinformation apparatus 100. Once such a software component is uploadedand installed, the information apparatus 100 can drive or output to thatspecific output device 140.

[0074] A software component may also be a partial device driver orpartial application software or partial software component. A softwarecomponent may be an executable or partially executable program, objector code. Software components may encapsulate information, algorithms,and data. Examples (of algorithms that may be included in the softwarecomponents include compression/decompression methods, file conversion,graphics representation and rendering, image processing and enhancementoperations, color space transformation and data conversion,encoding/decoding techniques, color matching and management methods,image transformation, interpolation methods halftoning techniques, userinterface software codes etc. Examples of data that may be included insoftware components include, for example, a color table, color spaceinformation, halftoning tables, output device type, output resolution,bit depth, input type, format or language, communication protocol type,output status, device identification and am signature, graphics, imageand text descriptions etc.

[0075] Such software components may be uploaded to output manager 308 tofacilitate communication and generation of print data or output datasuitable, compatible or optimized for the output controller 120 or theoutput device 140. The output controller 120 and output manager 308manage and negotiate the proper components to be uploaded to theinformation apparatus 100.

[0076] Not all situations require uploading an entire or complete driveror application to output manager 308 or information apparatus 100. Insome implementations uploading only a software component may besufficient. For example, there are many inkjet printers that commonlyuse one-bit or multi-bit CMYK printing technology, and sometimes havesimilar resolutions. An information apparatus 100 may pre-install a moregeneric printer driver, where this printer driver contains the deviceindependent portion of the software code, algorithms, and data that iscommon or can be used for this entire class of printers.Device-independent code may include, for example, a rasterizationprocess (including half-toning and color management methods) and imageenhancement of the digital document that is suitable for use with thisentire class of printers. In this example, it is feasible to upload onlya smaller software component or data that includes the device-dependentcomponents for a particular printer or output device 140. Thedevice-dependent portion or component or data may include, but is notlimited to, color tables, halftoning tables, output resolution, bitdepth, compression/decompression methods, color space conversion,encoding algorithms or conversion software that is specific to thatprinter or output device 140.

[0077] Another example of a software component stored in the memory unitof an output controller 120 for uploading to an information apparatus100 is an installation wizard or a user interface to capture a user'spreferences for printing or output operation. Examples of userpreferences in the case of printing may include, without limitation,color and print quality paramotor adjustments, number of copies, numberof cards per page, number of pages per sheet, duplex, portrait orlandscape, security information, etc.

[0078] Once the software components or data are uploaded or installed ininformation apparatus 100, the information apparatus 100 can drive oroutput to the output device 140. For example, an application 302 in theinformation apparatus 100 can print a digital document or image to aprinter.

[0079] Different information apparatuses 100 may require differentsoftware components to be uploaded in order to drive a specific outputdevice 140. Accordingly, a variety of software components and data ordevice drivers for a plurality of information apparatuses 100, operatingsystems, and platform types may be stored in the memory or storagecomponents of an output controller 120.

[0080] Output controller 120 may contain an embedded operating system tomanage its applications. With an operating system, some or allfunctionalities and feature sets of the output controller 120 may beimplemented as application software. Additional application software maybe installed or upgraded to newer versions in order to, for example,provide additional functionalities or bug fixes.

[0081] Output controller 120 may contain a user interface that allows auser to configure and manage the functions provided by the outputcontroller 120. The user interface of the output controller 120 maybeaccomplished by, for example, using display screens, soft keys,pushbuttons, mouse, stylus and keypads to allow users to interact withand manage the functions provided by the output controller 120. Examplesof such functions may include any or all of an on-off power switch,status display or indicator, cancel current job, or reorder existingjobs, etc.

[0082] Output controller 120 typically also includes a communication oradapter unit, which allows output controller 120 to communicate withother devices including information apparatus 100 through wired orwireless connections. Exemplary configurations of wireless adapter orcommunication unit are described below with reference to FIG. 2.

[0083] When output controller 120 is implemented as firmware, or anembedded application, the configuration and management of thefunctionalities of output controller 120 may be optionally accomplishedby, for example, using controller management software in a host computer(not shown). A host computer may be a desktop personal computer (PC),workstation, or server. The host computer may be connected locally orthrough a network to the output device 140 or controller 120.Communication between the host computer and output controller 120 can beaccomplished through wired or wireless communication. The managementapplication software in the host computer can manage the settings,configurations, and feature sets of the output controller 120.Furthermore, a host computer configuration application may download orinstall application software, software components or data in the outputcontroller 120 for the purpose of upgrading, updating, and or modifyingthe features and capabilities of the output controller 120.

[0084] Output device 140 in one implementation includes or is connectedto output controller 120 described above. Therefore, functionalities andfeature sets provided by output controller 120 are automaticallyincluded as part of the functionalities of output device 140. The outputdevice 140 may, however, implement or include other controllers orapplications that provide at least partially the features andfunctionalities of the output controller 120.

[0085] Therefore, the output device 140 may include some or all of thefunctionalities and feature sets provided by the output controller 120.

[0086] Output device 140

[0087] Output device 140 is an electronic system capable of outputtingdigital content regardless of whether the output medium is a substrate(e.g., paper), a display image, a projection, or sound. A typicalexample of output device 140 may be a printer, which outputs digitaldocuments containing text, graphics, images or any combination onto asubstrate. Output device 140 may also be a display device capable ofdisplaying still images or video, such as, without limitation,televisions, monitors, and projectors. Output device 140 can also be adevice capable of outputting sound. Any device capable of playing orreading digital content in audio (e.g., music) or data (e.g., text ordocument) formats is also a possible output device 140. A printer(including a fax machine, copier, etc.) is frequently referred to hereinas the exemplary output device 140. However, it should be recognizedthat the present invention applies as well to output devices 140 otherthan printers.

[0088]FIG. 9A is a block diagram of a conventional printing system orprinter 900A having three basic components: raster image processor (RIP)902, a memory buffer 904, and a marking engine 906. Raster imageprocessor 902 converts digital content into a bitmap suitable forprinting; memory buffer 904 holds the rasterized image ready forprinting; and marking engine 906 transfers colorant to a substrate(e.g., paper).

[0089] Marking engine 906 may use any of a variety of differenttechnologies to transform a rasterized image to paper or other media or,in other words, to transfer colorant to a substrate. The differentmarking or printing technologies that may be used include both impactand non-impact printing. Examples of impact printing may include dotmatrix, Teletype, daisywheel, etc. Non-impact printing technologies mayinclude inkjet, laser, electrostatic, thermal, dye sublimation, etc.

[0090] Marking engine 906 and memory buffer 904 of a printer 900 formits printer engine 908, which may also include additional circuitry andcomponents, such as firmware, software and or chips or chipsets fordecoding and signal conversion etc. (not shown). Input to a printerengine 908 is usually a final rasterized print data generated by theraster image processor 902. Such input is usually device dependent andprinter specific. The printer engine 908 may take this device dependentinput and generate output pages.

[0091] Raster image processor (RIP) 902 may be located within theprinting device itself (as shown in FIG. 10A) or externally implementedas hardware, software, or a combination. As an example, RIP may beimplemented in a software application or device driver in theinformation apparatus. A RIP may also reside within a printercontroller, a print server or an output controller of present invention.Examples of raster image processing operations may include image andgraphics interpretation, rasterization, segmentation, color spacetransformation, image enhancement, color correction, halftoning etc.

[0092] When a RIP 902 is located inside an output device 140, the RIP902 is usually included in a printer controller 910 that may, forexample, interpret, convert and/or rasterize input print data into afinal format, language or instructions that printer engine 908 canunderstand. A laser printer with a faster printing speed is an examplethat falls in this category. For example, a PostScript printercontroller 910 may contain a postscript interpreter (not shown) and araster image processor 902 (RIP). Postscript interpreter interpret thepostscript language and the raster image processor 902 may process thedigital document and converting it to a printer specific format,language or instructions that can be accepted by the printer engine 908.In this example, a device-dependent printer driver (e.g., a Postscriptdriver, not shown) may be needed in the information apparatus 100 toconvert digital document from its original format into print data (e.g.in PostScript) that is acceptable to the printer controller 910.

[0093] Another example of page description language is PCL (PrinterCommand Language) from HP (Hewlett Packard). In the same way aspostscript, a printer equipped with PCL printer controller 910 can takePCL as input. Information apparatus 100 usually needs to have PCLprinter driver in order to drive or print to a printer equipped with aPCL controller.

[0094] Although the illustrations above use PostScript and PCL asexamples, a variety of other page description languages, markuplanguages, image formats, graphics formats, and file formats may also beused as input print data 920 to a printer 900 or output device 140.Examples of possible inputs other than PostScript and PCL may includewithout limitation, EMF, XML, HTML, among many others. Some printermanufacturers may also use a combination of proprietary ornon-proprietary page description languages, markup languages, fileformats, graphics and image formats, color spaces, metafiles, encoding,decoding, compression or decompression etc. for the print data 920.Print data 920 sent to printers with printer controllers 910 are usuallyintermediate descriptions of a digital document that may require furtherinterpretation, processing and/or conversion before it can be send aprinter engine for output. A printer controller 910 may interpret andprocess the input intermediate print data information into the finalformat that can be understood by the printer engine 908. Regardless ofthe type of print data 920, users usually have to pre-install adevice-specific driver in their information apparatus 100 in order tooutput the proper language, format, or file that can be accepted by aspecific printer 140.

[0095] Some output devices 900B do not have a printer controller 910 asshown in FIG. 9B. A typical example is a lower-cost inkjet printer. RIPin this example may be implemented in a software application 302 ordevice driver or output manager 308 of present invention in theinformation apparatus 100. Therefore, the rasterization process mayoccur in the information apparatus 100 that outputs to such a printer. Adevice-specific driver or application may need to reside in theinformation apparatus 100 to rasterize and convert the digital documentfrom its original format into final print data 920B (e.g., compressedCMKY data with one or more bits per pixel) that can be understood by aparticular printer engine 908B.

[0096] In present invention, for the printer 900B, RIP can be integratedwithin the output manager 308 or application software 302 in theinformation apparatus 100. Alternatively, RIP may also be integrated asa part or a function of any one of output controllers as shown inconfigurations 120D, 120E, and 120F.

[0097] The output controller 120 may be connected externally to anoutput device 140 or integrated internally into the output device 140.If an output device 140 such as a printer already includes a printercontroller 910, the output controller 120 may be implemented serially orcascaded with the printer controller 910 as two separate controllers.Alternatively, output controller 120 can be integrated with a printercontroller to become a “combined controller” 120C. A combined controller(e.g., 120C or 120F) has functionalities of both printer controller 910(e.g., input interpretation and or raster image processing) and outputcontroller 120 of the present invention. Other configurations andimplementations of output controller 120 and printer controller 910 arealso possible. The various possible configurations and implementationsof output controller are described below with reference to FIG. 4.

[0098] Communication unit

[0099] Communication links 150 and 160 between information apparatus 100with an output controller 120, whether externally connected and orinternally integrated, may be variously implemented. In oneimplementation, information apparatus 100 communicates with outputcontroller 120 through wireless connections such as infrared or radiolinks. Examples of wireless connections technology include withoutlimitation IrDA, home RF, Bluetooth, IEEE 802.11, HiperLan2, amongothers. However, wired connections such as serial interfaces, parallelinterfaces, USB interfaces, Fire Wire (IEEE 1394), Ethernet and tokenring network among others may also be implemented in the presentinvention. Adapter pairs may be incorporated into each communicatingnode (e.g., information apparatus 100 and output controller 120) toconduct communications by performing signal conversions.

[0100] In the case that output controller 120 is installed as anexternal component or “box” (as shown in FIG. 4A), the communicationlink 170 between output controller 120 and output device 140 may also beimplemented using wired or wireless adapters.

[0101]FIGS. 2A and 2B are block diagrams illustrating two exemplaryconfigurations and implementations of wireless communication adaptersthat may be included in an information apparatus 100, output controller120 or output device 140. Referring to FIG. 2A, a radio adapter 200 maybe implemented to enable data/voice transmission among devices throughradio links. A RF transceiver 214 coupled with antenna 216 is used toreceive and transmit radio frequency signals. The RF transceiver 214also converts radio signals into and from electronic signals. The RFtransceiver 214 is connected to a RF link controller 210 by an interface212. The interface 212 may perform functions such as analog-to-digitalconversion, digital-to-analog conversion, modulation/demodulation andother data conversion functions.

[0102] RF link controller 210 implements real-time lower layer (e.g.,physical layer) protocol processing that enables the hosts (e.g.,information apparatus 100, output controller 120, output device 140,etc.) to communicate over a radio link. Functions performed by the linkcontroller 210 may include, without limitation, errordetection/correction, power control, data packet processing, dataencryption/decryption and other data processing functions.

[0103] A variety of radio links may be utilized, including a group ofcompeting technologies operating in the 2.4 GHz unlicensed frequencyband. This group currently includes Bluetooth, Home radio frequency(Home RF) and implementations based on the IEEE 802.11 standard. Each ofthese technologies has a different set of protocols and they all providesolutions for wireless local area networks (LANs). Interference amongthese technologies could limit deployment of these protocolssimultaneously. It is anticipated that new local area wirelesstechnologies may emerge or that the existing ones may converge.Nevertheless, all theses existing and future wireless technologies maybe implemented in the present invention to transmit data betweendifferent devices without limitation and therefore in no way depart fromthe scope of present invention.

[0104] Among the current available wireless technologies, Bluetoothrequires relatively lower power consumption. Bluetooth has its ownprotocol stack and is designed for short range (10 meters),point-to-multipoint voice and data transfer. It is based on afrequency-hopping version of spread spectrum. Seventy-nine hopfrequencies are utilized beginning at the lowest frequency of 2402 MHzand each of the 79 hop frequencies is 1 MHz above the next lowerfrequency. Bluetooth-enabled devices operate in piconets, in whichseveral devices, using the same hopping pattern or sequence, areconnected in a point-to-multipoint system (piconet). One device (master)in each piconet determines how the bandwidth is allocated to otherdevices (slaves). As many as 10 piconets of 8 devices each can operatesimultaneously.

[0105] Referring to FIG. 2B, infrared (IR) adapters 220 may beimplemented to enable data transmission among devices through infraredtransmission. The IR adapters 220 may be conveniently implemented inaccordance with the Infrared Data Association (IrDA) standards andspecifications. In general, the IrDA standard is used to providewireless connectivity technologies for devices that would normally usecables for connection. The IrDA standard is a point-to-point (vs.point-to-multipoint as in Bluetooth), narrow angle, ad-hoc datatransmission standard designed to operate over a distance of 0 to 1meter and at speeds up to 4 Mbps.

[0106] Configuration of infrared adapters 220 may vary depending on theintended rate of data transfer. FIG. 2B illustrates one embodiment ofinfrared adapter 220. Transceiver 226 receives/emits IR signals andconverts IR signals to/from electrical signals. A UART (universalasynchronous receiver/transmitter) 222 performs the function ofserialization/deserialization, converting serial data stream to/fromdata bytes. The UART 222 is connected to the IR transceiver 226 byencoder/decoder (ENDEC) 224. This configuration is generally suitablefor transferring data at relatively low rate, for example 115.2 kbps orbelow. Other components (e.g. packet framer, phase-locked loop) may beneeded for higher data transfer rates.

[0107]FIGS. 2A and 2B illustrate exemplary configurations of wirelessadapters. Such adapters are implemented into devices (e.g., informationapparatus 100, output controller 120, output device 140, etc.) to enablewireless communications among/between them. Wired links, however, suchas parallel interface, USB, firewire interface, Ethernet and token ringnetworks may also be implemented in the present invention by usingappropriate adapters and configurations.

[0108] Different Output Manager Configurations and Processes

[0109] FIGS. 3A-3C illustrate different implementations of outputmanager 308. FIG. 3A shows an exemplary configuration of output manager308 in which its host information apparatus 100 includes an operatingsystem. Such information apparatuses 100 may include, withoutlimitation, desktop PC, laptop PC and handheld or palmtop computer,among others. The operating system provides API's or object models 300for software applications 302 to interface and communicate with variousdevice management applications sometimes called device drivers. Outputmanager 209 in this case may be characterized as one of the devicemanagement applications or device drivers. Different softwareapplications 302A can share the same output manager 308 through the useof API's 300 provided by an operating system.

[0110] As shown in FIG. 3A, email application 302 A1, document creationapplication 302 A2 and Internet browsing application 302 A3 (referred togenerally or together as application software 302) may operate on top ofor through an operating system included in the information apparatus100. The operating system provides or supports API's or object models300 for these software applications 302 to communicate with and accessutilities and services provided by output manager 308. Applicationsoftware 302 and output manager 308 may communicate with each otherthrough a variety of means using for example file transfer, metafile,messages, instances, procedural calls, etc., which may or may not beprovided by the operating system or its API's or object models 300. Theoutput manager 308 communicates and synchronizes with output controller120 to enable pervasive output. Therefore, a user may output digitalcontents from any of these software applications 302 (email, documentcreation, Internet browsing, etc.) to an output device 140 equipped withor connected to output controller 120.

[0111] It should be recognized that the three software applications302(1)-302(3) illustrated in FIG. 3 are merely examples of applicationsthat may be included in the information apparatus 100. Various othersoftware applications 302 (e.g., messaging, digital imaging, graphics,video, audio, etc.) may also exist in the same information apparatus 100and they may all access the utilities provided by the output manager308. It should also be recognized that other device managementapplications or drivers might also be included in the informationapparatus 100. These device management applications or drivers may beimplemented in the same way as output manager 308 so that they can beaccessed by other software applications supported by the operatingsystem.

[0112]FIGS. 3B and 3C illustrate exemplary configurations of outputmanager 308 when information apparatus 100 includes, respectively, nooperating system or a less capable operating system that does notprovide API's or object models 300 for software application 302interactions. Examples of such an information apparatus 100 may include,without limitation, PDA, smart phone, pager, Internet pad, emailterminal, digital and video cameras, ebook and other dedicated devicesetc. In this case, each software application 302 in the informationapparatus 100 provides or implements the capabilities to enablepervasive output. As shown in FIG. 3B, each software application 302B1-302 B3 integrates output manager 308 or includes the features ofoutput manager 308 to enable pervasive output. It should be recognizedthat, even in an environment where there is a complete operating system,application software 302 can still decide to implement its own output ordevice management capabilities (as shown in FIG. 3B) and not depend oruse the functionalities or API's or object models 300 provided by anoperating system to facilitate access of output manager as a separateapplication.

[0113] Instead of integrating the output manager 308 into applicationsoftware 302, an alternative implementation is shown in FIG. 3C. Thesoftware applications 302 C1-302 C3 may establish direct links with theoutput manager 308, which may be used as a helper program that can beinvoked or launched by each software application 302 as needed.

[0114] The communication and exchange of information between outputmanager 308 and other software applications 302 can be accomplished byone or more of many available techniques, such as passing, transferringor exchanging objects, messages, procedural calls, files, metafiles,etc. Some of these techniques may be facilitated by a set of APIs orobject models provided by the application software 302 or output manager308 or the operating system. The exact technique may depend for exampleon the type of application, platform, language, and developer preferenceetc. This may be easily implemented and recognized by an averagesoftware engineer skilled in the art.

[0115] The above are merely exemplary implementations of output manager308. Due to the diversity of feature sets and capabilities of operatingsystems, other implementations of output manager 308 are also possible.As an example, some operating systems may provide partial APIs or objectmodels to support limited output capability. In this case, softwareapplications 302 may rely on the limited output capacity to interactwith device management applications, or the software applications 302can implement or incorporate partially other desired output features ofthe output manager 308 using the configurations or combination ofconfiguration illustrated in FIGS. 3B or 3C.

[0116] Different Output Controller Configurations and Processes

[0117] FIGS. 4A-4F illustrate various alternative configurations andimplementations of output controller 120. As described above, a printer900A (FIG. 9) may include within it a RIP 902 or printer controller 910.Such printer 900A is usually more powerful and therefore more expensivethan printers without these features. One example of such printer 900Ais high-speed laser printer. Output controller 120 may be variouslyimplemented in printers regardless of whether they include a printercontroller.

[0118]FIG. 4A shows that output controller 120 may be cascadedexternally to one or more printers (only one shown). Informationapparatus 100 communicates with output controller 120A, which thencommunicates with output device such as a printer 104A. Thecommunication link between the output controller 120A and the printer140A may be a wired link or a wireless link, as described above.

[0119]FIG. 4B shows another implementation in which output controller120B is installed as one or more circuit boards or cards internallyinside printer 140B. The output controller 120B may co-exist withprinter controller and other components of the printer 140B. One exampleof this implementation is to connect output controller 120B sequentiallywith the printer controller.

[0120]FIG. 4C show a third implementation in which the functionalitiesof output controller 120 and printer controller 910 are combined into asingle controller (—referred to as “combined controller”) 120C. Thecombined controller 120C is a more capable controller. In thisimplementation, it is possible to reduce the cost of material whencompared to implementing two separate controllers as shown in FIG. 4B.As an example, the combined controller 120C may share the sameprocessors, memories, and storages to run the applications andfunctionalities of the two types of controllers and therefore, may havelower component costs when compared to providing two separatecontrollers.

[0121] Some printers do not include a raster image processor or printercontroller 910, as illustrated in FIG. 9B, and as a result are usuallyless expensive. An example of this type of printer is a low-cost desktopinkjet printer. This type of printer may use a proprietary or publishedinput format. For example, the input to an inkjet printer may consist ofspecific proprietary compressed CMYK data with one or more bits perpixel input. Application software 302 or printer drivers included ininformation apparatus 100 usually perform raster image processing. It istherefore necessary that the proper device driver or applicationsoftware runs the raster image processing on an information apparatus100 before printing. Accordingly, output controller 120 may beimplemented into a variety of printing systems, including printerswithout capable or complete printer controllers for performing rasterimage processing functions.

[0122]FIG. 4D shows as a fourth implementation of output controller 120Dthat is installed in an external component or “box,” which is connectedto a printer 140D that does not include a printer controller or rasterimage processor. In this configuration, an application software 302 ordevice driver 308 in information apparatus 100 would typically performthe rasterization function. However, some or all operations of rasterimage processing may also be implemented in the output controller 120D.Any print data sent to the printer 140D from the output controller 120Dis preferred to be in a final format that can be understood andprocessed by the printer engine of the printer 140D. As in otherexamples, connection between output controller 120D and output device140D can be wired or wireless. Connection between information apparatus100 and output controller 120D is preferred to be wireless, for example.

[0123]FIG. 4E shows as a fifth implementation of an output controller120E that is incorporated within printer 140E as one or more circuitboards or cards and may contain software and applications running on anembedded processor. As with printer 140D (FIG. 4D), printer 140E doesnot include a printer controller or raster image processing capability.Accordingly, information apparatus 100 would typically performrasterization functions in this implementation. However, raster imageprocessing could alternatively be provided completely or partially byoutput controller 120E, for example, to speed up raster image processingoperations for an information apparatus 100 having limited processingand memory capabilities.

[0124]FIG. 4F shows a sixth implementation, a combined controller 120Fthat integrates the functionalities of a printer controller and anoutput controller into a single external combined controller componentor “box” 120F. The two controller functions may share a common processoras well as a common memory space to run applications of the two types ofcontrollers. Under this configuration, either information apparatus 100or the combined controller 120F could perform or share raster imageprocessing functionality. One exemplary implementation of the combinedcontroller 120F shown in FIG. 4F is to use an external computing device(PC, workstation, or server) running one or more applications thatincludes the functionality of output controller 120 and printercontroller 910.

[0125] The above are exemplary implementations of output controller 120,but other implementations are also possible. For example, partialfunctionalities of output controller 120 may be implemented in anexternal “box” while the remaining functionalities may reside within anoutput device 140 as a separate circuit board or integrated with aprinter controller. As another example, the functionalities of outputcontroller 120 may be implemented into a plurality of external boxesconnected to the same output device 140. As a further example, the sameoutput controller 120 may be connected to and service multiple outputdevices 140.

[0126]FIG. 5 illustrates one embodiment of output process using aprinter as primary output device 140. It should be recognized, however,the following described process can be similarly applied to other outputdevices 140 such as fax machines, digital copiers, display screens,monitors, TVs, voice output devices, etc

[0127] Step 500 indicates that a user initiates output from aninformation apparatus 100. For example, a user may want to print orotherwise output an email, receipt, confirmation, map, photo, graphics,web page, one or more slides of a PowerPoint®-brand presentation, or anyother document or digital content from an information apparatus 100. Theoutput may be initiated by various means, such as by using a soft key,push button, keyboard, keypad, mouse, stylus, software GUI, command orvoice activated command, etc. An exemplary user interface with which auser may initiate such a process from an information apparatus 100 isdescribed below with reference to FIG. 8. Step 500 and one or more othersteps of output process, shown in FIG. 5, may be implemented by anoutput manager 308 residing in a user's information apparatus 100.

[0128] Step 502 references a discovery process in which, for example,information apparatus 100 searches for available output devices 140,including display devices, printers, copiers or fax machines amongothers (collectively refer to as “printers” here for simplicity ofdiscussion), that can perform a requested output or print job. Theoutput manager 308 residing in the information apparatus 100 mayparticipate in, coordinate and manage the discovery process 502. As partof discovery process 502, information apparatus 100 may communicate viaa wired or wireless connection with output controllers 120 that areconnected to or included in output devices 140.

[0129] In some situations, the discovery process 502, or part of it, maybe skipped. For example, discovery process 502 may be skipped if a useralready knows the output device or printer to which output is to bedirected. As another example, a user may set a frequently used printeras a preferred default printer so that discovery process 502 may bepartly skipped if the default printer is found to be available. Otherexamples in which discovery process 502 may be optional or partlyskipped involve direct wire line connections or infrared communications.In these cases, a user may directly connect or physically point aninformation apparatus 100 to a specific output device 140 so that itcould be sufficient only to check the connection and establishcommunication between the devices.

[0130] Discovery process 502 may operate in a variety of scenarios. Inone scenario, information apparatus 100 broadcasts a service request,for example printing, through wired or wireless signals. Servicedevices, such as output device 140 equipped with output controller 120,“listen to” such signals, “read” the request, “see” whether they canprovide requested service, and respond if they can provide the requestedservice. Alternatively or in combination, all service devices canperiodically or continuously announce or advertise the services theyprovide. Information apparatus 100 “listens to” such announcements andidentifies the service it needs. In a third scenario, service devices ofthe same network (e.g., LAN) register their services with a controlpoint. A control point is a computing system (e.g. a server, controller)that maintains records on all service devices within the same network.Information apparatus 100 may contact the control point to search forthe service it needs.

[0131] Various protocols may be implemented in the discovery process502. Wireless communication protocols are preferred. Wiredcommunication, on the other hand, may also be implemented. Examples ofapplicable protocols may include, without limitation, Bluetooth, HAVi,Jini, Salutation, Service Location Protocol, and UniversalPlug-and-play, among others. Other proprietary protocols or combinationsmay also be implemented in the discovery process.

[0132] In the discovery process 502, information apparatus 100 may ormay not find an output device 140 available to accept its print oroutput job. Exemplary factors that may impact the availability of outputdevices 140 may include, without limitation, the following:

[0133] Physical distance—Some wireless communication links may imposelimitations on physical distance between communicating devices. Therestrictions on physical distance may vary among different wirelesscommunication technologies. Wired communication, on the other hand, isalso subject to the availability and length of cable or other wiredlines.

[0134] Compatibility—The output process with reference to FIG. 5 employscommunication and coordination among various devices such as aninformation apparatus 100 having output manager 308, and outputcontrollers 120 associated with output devices 140. Compatible hardwareand software components may need to reside in each of the communicatingnodes (e.g., information apparatus 100 and output device 140). Anymissing part may cause compatibility problems. Other factors may alsocause lack of compatibility. For example, components stored in thememory unit of output controller 120 may not support the operatingsystem or application software 312 included in the information apparatus100.

[0135] Security authentication—Security authentication may beimplemented in various steps of communication, including the discoverystep 502. Security authentication may be required for example when anoutput service is restricted to a certain group of users or informationapparatuses. When a user requests service, output device 140 or outputcontroller 120 may process an authentication step by automaticallydetecting the identification or other information provided by the user,output manager 308 or information apparatus 100. As a result of such anauthentication process, the information apparatus 100 of a particularuser may not be able to discover an available output device 140 becauseaccess is not authorized for the user or the apparatus.

[0136] User specified search criteria—The user may specify certainsearch criteria for discovery process 502, such as output device model,quality of service provided, range or price of service charge, etc.Output devices 140 not satisfying user criteria or a default profile maynot be shown to the user.

[0137] Step 506 indicates that the user is notified if no availableoutput device 140 is found in the discovery process 502. The user may benotified by an application such as the output manager 308 through a userinterface of the information apparatus 100. The information apparatus100 may also provide more detailed information such as the reasons whythe requested service is not available. Examples of possible reasons mayinclude, among others: no output device within limited physicaldistance, no compatible hardware or software components, technicaldifficulties, security authentication not satisfied, no subscription tothe service, search criteria not met, etc.

[0138] Step 508 indicates that alternatives are provided when arequested service is not available at the current moment. The user maybe provided with alternatives such as canceling the service request,trying again, or being notified when the requested service is availableor the requested output device 140 is identified or becomes available.As an example, the user's information apparatus 100 may not detect anyavailable output devices 140 in the current wired/wireless network. Theprint requests are then queued or registered within the informationapparatus 100. When the user enters a new network having availableprinters, or when new compatible printers are added to the currentnetwork or when a printer becomes available for any reason, the userwould be notified of such availability through the information apparatus100. The user may then output the print job to the newly detected or nowavailable printer with, for example, a mere click of a button. Thisdetection and notification function may be implemented by a softwareprogram or as a feature of the output manager 308. This feature may alsobe implemented in hardware or combination of hardware and softwareresiding in the information apparatus 100.

[0139] Step 514 indicates that service negotiation is performed, such aswhen one or more available printers are discovered in the discoveryprocess 502. In service negotiation process 514, information apparatus100 exchanges information with output controllers 120 connected to orinstalled in the available output devices 140. The output manager 308may participate in, coordinate or manage negotiation process 514 withoutput controller 120. Information being exchanged may include, forexample, the following:

[0140] Type, make and model of each available output device 140,including information about the printer engine, its technology andspecifications of the output device.

[0141] Type and parameters of the output device 140 such as font orinternational character code supported, paper size, resolution, bitdepth, color space, number of colors supported, color or grayscale etc.

[0142] Type of service and quality of service provided by each availableoutput device 140.

[0143] Conditions under which the services are provided (e.g., servicecharge, subscription charge) and whether, for example, transaction andservice charges are satisfied.

[0144] Whether the usage or service of each output device 140 isrestricted to certain groups, in which case the user may have to provideauthentication information to be identified as member of such a groupbefore use of that device is allowed.

[0145] Type, make and model (including operating system) of theinformation apparatus 100.

[0146] The type of input format, encoding, language, data, color space,and or compression that the output controller 120 or other device maytake as input, for example, PostScript, PCL, RTL, XML, etc.

[0147] The type of component or data that may need to be uploaded fromoutput controller 120 to information apparatus 100 so as to enableoutput to a specific output device.

[0148] The information being exchanged may be entered manually by theuser or may be automatically detected and or synchronized between theinformation apparatus 100 and the output controller 120 or it may bepartially assisted by the user or partially automated. Some or all ofthe information being exchanged may be provided to the user through auser interface in the information apparatus 100. The user may monitorthe status or approve certain transactions. One embodiment of theservice negotiation process 514 is described below with reference toFIG. 6. Based on the information provided and obtained in the servicenegotiation process 514, the user may choose one or more output devices140 that can take the print or output job.

[0149] Step 516 indicates that a synchronization process is performedonce an output device 140 has been identified and selected. Beforesynchronization process 516 begins, the information apparatus 100 maycommunicate with the output controller or controllers 120 of theselected output device or devices 140 to identify what components, ifany, need to be uploaded to the information apparatus 100 to enableprinting or other output. This communication between informationapparatus 100 and output controller or controllers 120 may not benecessary if adequate information has been obtained in the discoveryprocess 502 and or service negotiation process 514. Synchronizationprocess 516 may be optional or it may be partially skipped if thenecessary components (e.g., identified in the service negotiation step514) already exist in information apparatus 100.

[0150] After they have been identified, the necessary components orparts of components or data may be uploaded to the information apparatus100 from output controller 120. Examples of possible components mayinclude, without limitation, one or more of the following: data, devicedriver, printer driver, application software, software components,metafiles, user interface etc. The output manager 308 may participatein, coordinate or manage the synchronization process 516. Encryptiontechniques may be implemented in the synchronization process 516 toprevent eavesdropping.

[0151] The newly uploaded components may be incorporated into the outputmanager 308 residing in the user's information apparatus 100.

[0152] Alternatively or in combination, the newly uploaded componentsmay be installed into the information apparatus 100 as a separateapplication or as part of the output manager 308. The process ofuploading and installing may be done automatically or manually by theuser, or a combination of the two.

[0153] Part or all of synchronization process 516 may be skipped in someinstances. For example, the information apparatus 100 may alreadyinclude all the software components and data or drivers necessary foroutput to the selected output device or devices 140. This may be due tothe components having been uploaded from a previous synchronizationprocess 516 and left undeleted, or alternatively the user may havepreinstalled all the necessary components for output in the informationapparatus 100. In these cases, no software components are being uploadedand the user may be notified of this status for possible override ofsynchronization process 516. Alternatively synchronization process 516may be automatically skipped transparently to the user.

[0154] Step 518 indicates that print or output job processing isperformed. In this step 518, the print request or print job is processedand digital content or document may be converted to the final format tosend to the output device 140 for output. At the beginning of this step518, the user may be provided with options to select or change or inputprinting or output preferences such as page layout, number of copies,color/grayscale, print quality parameters, etc. These options mayinclude or offer pre-configured user preferences or factory defaults.Some options, parameters and preferences may be device-dependent whileothers may be device-independent. For example, device dependentparameters and preferences may be presented after having synchronized oruploaded device dependent components or information from the outputcontroller 120. Device independent parameters and preferences may alsobe uploaded and synchronized like the device dependent parameters andpreferences or may be pre-installed as part of the output manager 308prior to the synchronization and uploading of information.

[0155] With reference to FIGS. 4A-4F, output controller 120 may beimplemented in a variety of ways. Different implementations of outputcontroller 120 may impact the procedures described here. The originaldigital document or content included or generated in an application 312in information apparatus 100 may be processed by different applicationsin different locations (application software 312, output manager 308,output controller 120, printer controller) before being converted to afinal print data that can be accepted by a printer engine for output.For example, raster image processing of the digital document to convertit to print data suitable to output device 140 may occur entirely orpartially in application software 312, output manager 308, outputcontroller 120, or the printer controller, depending on theimplementation, configuration, and the type of output system and outputdevice among others. Different processing procedures and embodimentsthat may be implemented in this step 518 are described in more detailbelow with reference to FIG. 7.

[0156] Step 520 indicates that the printer engine or display engine 908generates a final output. In this step 520, the processing result ofstep 518 is sent to a printer engine or display engine 908 of an outputdevice 140 to generate final output on a substrate, for example. Memorybuffers may be needed to temporarily store print data before output.Firmware, DSP, ASIC, FPGA, system-on-a-chip, software, or a combination,may be used or involved to convert digital data into signals suitablefor the printer engine or display engine 908.

[0157] After a print job or output job has been successfully printed ordisplayed, the user may be provided a choice (not shown) to delete thecomponents that have been uploaded to the information apparatus 100during the synchronization process 516. This optional feature may beuseful when the information apparatus 100 has limited storage space. Oneimplementation of this optional feature is to provide a setting in theoutput manager 308 in which the user has a choice to (1) always keep theuploaded data or components; or (2) always automatically delete theuploaded data or components upon completion of the print job, or uponexit of the application, or upon shutting down of the informationapparatus or upon elapse of certain amount of time; or (3) always askthe user whether to delete or keep the uploaded component or data.

[0158] The above description illustrates an exemplary embodiment ofoutput process 501. A printer is referred to as output device 140 in theabove illustration, however, it should be recognized that output process501 could be easily applied to other output devices 140 such as faxmachines, digital copiers, display screens, TVs, monitors, projectors,voice output devices etc.

[0159] A pervasive output process implementing fewer or additional stepsmay also be possible. For example step 502, the discovery process, maybe skipped if the user already knows which printer or printers are tooutput the content. As another example, a payment-processing step may beadded to the above-described output process 501 if the printing serviceis provided for a fee. Output controller 120, in this case, may provideservices such as calculating payment amount or collecting payments in avariety of possible forms, for example, credit card, bank card, cash,E-cash, smart card, among others. The payment information (e.g., creditcard number or other credit identification or payment) may be stored inthe information apparatus 100 and released to the output controller 120at the user's choice. Adding additional processes or skipping one ormore steps in output process 501 does not, however, depart from thespirit and scope of present invention.

[0160]FIG. 6 illustrates an embodiment of service negotiation process514. In this illustration, it is assumed that available output devices140 have been identified from the discovery process 502. In the servicenegotiation process 514, information apparatus 100 exchanges informationwith output controller 120 or output devices 140. Service negotiationprocess 514 may include one or more of the following:

[0161] (1) The user may be provided with information on the availableoutput devices 140.

[0162] (2) The user may select a desired output service according to theinformation provided. The output manager 308 residing in the informationapparatus 100 may participate in, coordinate and manage the servicenegotiation process 514, together with the output controller 120.

[0163] In step 600, the user may be provided at information apparatus100 with information on some or all available output devices 140identified in the discovery process 502. Information being provided heremay include one or more of the following:

[0164] Total number of available output devices discovered.

[0165] Model and make of each available output device.

[0166] Type and capability of the output device.

[0167] Type of service and quality of service provided by each availableoutput device.

[0168] Conditions under which the services are provided. For example, ifservice charge or subscription fee is required and the acceptablepayment method.

[0169] Whether the use of each output device is restricted to certaingroups.

[0170] The components or information, if any, need to be uploaded to theinformation apparatus to enable output to the selected output devices.

[0171] Information collected during discovery process 502 may beprovided to the user through a user interface on the informationapparatus 100, such as a GUI or voice or another interface.

[0172] In step 602, based on some or all of the information provided,the user may choose one or more output devices to take the print requestor print job. On the other hand, the user may choose to decline theoutput service offered, and choose not to output the document or contentto any of those devices. In this case, alternatives may be provided tothe user as previously described with reference to step 508 (FIG. 508).

[0173] Authentication step 604 is optional, but may be necessary if, forexample, the use of an output device 140 is restricted to a group ofusers. In this case, the user may have to provide authenticationinformation to identify him/herself as part of the authorized group touse the service. Examples of authentication methods may include a user'sname, password, personal identification number (PIN), ID number,signatures, security keys (physical or digital), biometric, fingerprint,voice, etc. ID number or IR address of the information apparatus 100 mayalso be used as authentication information. Such authenticationinformation may be provided by the user manually or detectedautomatically by the output controller 120 or output device 140.

[0174] It should be recognized that FIG. 6 only provides one embodimentof the service negotiation process 514 of present invention. A servicenegotiation process 514 having fewer or additional steps may also bepossible. As an example, step 604 (authentication) may not be necessaryif the use of an output device 140 is not restricted. As anotherexample, one or more steps, such as credit verification, payment,deposit, escrow, and receipt processing may be added to the negotiationprocess 514 if a service charge is involved. All these and otherpossible variations, however, shall not depart from the spirit and scopeof present invention.

[0175]FIG. 7 illustrates different processing procedures that may beimplemented as part of output or print job processing step 518. For thisdescription, output device 140 is referred to as a printer and outputdata is referred to as print data. It should be understood that aprinter is only one embodiment of an output device. Display, projectionand audio devices are also output devices within the scope of presentinvention. In no way should the use of printer, in place of outputdevice, and print data, in place of output data, be viewed asrestricting the scope to a printing device in the following discussion.

[0176] In step 700, output manager 308 processes an input digitaldocument or content 701 and converts it to print data 703 that can betransmitted to output controller 120, combined controller (120C, 120F)or directly to printer engine 908. Rasterization, interpretation,encoding, decoding, etc. may take place in this step. In oneimplementation, print data 703 may utilize an intermediate format orlanguage to facilitate the transmission of the digital document orcontent 701 to the output controller 120. This intermediate format orlanguage may be a predefined input format or language that the outputcontroller 120 can understand. It is also possible in this step 700 thatthe output manager 308 simply passes the digital document 701 in itsoriginal format to the output controller 120 with little processing. Instill another exemplary implementation, the output manager 308 mayprocess (e.g. raster image process) the digital content or document 701into a final print data or output data format compatible to the inputrequirements of the output device 140. Encryption techniques may be usedto assure the security of communication between information apparatus100 and output devices 140.

[0177] As indicated above, output data or print data (in case of aprinter) 703 generated by step 700 may be in various formats. In oneembodiment, the print data 703 may be in a final format suitable forsending directly to the printer engine. In this case, the outputcontroller 120 does little or no processing. One exemplary use of thisconfiguration can be implemented in a low cost inkjet printer that doesnot have a printer controller. In this example, the print data 703 maybe in a compressed 1 bit or more CMYK data format that can be sentdirectly to the printer engine 908 for final output as shown in step702. Or print data 703 can be sent to the output controller 120 forpossible optional features such as buffering, queuing, and print jobmanagement as shown in step 704.

[0178] In another embodiment, output manager 308 may generate print data703 in an intermediate format, language, or instruction that requiresfurther processing. Examples of such format, language or instruction mayinclude, without limitations, Page description languages (e.g.PostScript, PCL), metafiles (e.g. EMF), markup languages (e.g. XML,HTML), image or graphics formats (TIFF, GIF, PNG, JPEG compressed),among others. The intermediate format may also include proprietarysolutions in page description languages, markup languages, metafiles,image and graphics formats, encoding and decoding, compression anddecompression. The above-mentioned intermediate formats may be usedindependently, or in combinations.

[0179] As described above with reference to FIG. 4, output controller120 may be implemented in a variety of ways. Different implementationsof output controller 120 may impact the processing procedures describedhere with reference to FIG. 7.

[0180] As shown in step 702, the print data 703 is sent directly to theprinter or display engine 908 for final output with little or no furtherprocessing from output controller 120 or a printer controller 910. Inthis case, the print data or output data 703 is preferably to be in afinal format or language that can be understood by the printer ordisplay engine 908 that is part of the selected output devices ordevices 140.

[0181] Alternatively, as shown in step 704, print data 703 is sent to anoutput controller 120 connected to or installed within a selectedprinter or output device 140. In one embodiment, the print data 703 maybe in a final format or language that can be understood and processed bythe printer or display engine 908. In this case, the output controllermay buffer the input print data 703 before passing it to the printer ordisplay engine 908 with little or no further processing. In anotherembodiment, print data 703 maybe in an intermediate format or languagenot understood by the printer 900 or output engine 908. Therefore, theoutput controller 120 may process the print data and convert it into afinal format, language or instruction that can be sent to the printerengine (or other output engine, in the case of other type of outputdevice).

[0182] Regardless of the format of input print data 703, the outputcontroller 120 may perform additional management functions such aspayment processing, service verification, authentication, print jobmanagement, queuing, spooling, quality of service among others.

[0183] As illustrated in step 706 and 708, the print data 703 may beprocessed by both output controller 120 (in step 706) and printercontroller 910 (in step 708) separately before being sent to the printerengine 908 for final output. For example, some printers, such ashigh-speed laser printers, already include a printer controller 910 thathas the capability of processing certain types of input such asPostScript, PCL, and XML, among others. In this case, the outputcontroller 120 may process or convert the print data 703 into the input707 required by the printer controller 910. Alternatively, in adifferent implementation, if the print data 703 is already in one of theformats or languages that are compatible and can be understood by theprinter controller 910, the output controller 120 may simply buffer theprint data 703 and sent it directly to the printer controller 910 asneeded with little or no processing. In step 708, the printer controller910 may perform functions such as interpretation, decoding, and rasterimage processing operations on the input print data 707 (such as a pagedescription language) if such operations were not already performed byoutput controller 120 or by output manager 308. The processed result ofthe printer controller 910 may be sent to the printer engine 908 forfinal output.

[0184] As illustrated in step 710, a single combined controller 120F,120C (as illustrated in FIGS. 4C and 4F) that combines thefunctionalities of output controller 120 and a printer controller 910may process the print data. Applications that provide feature sets foreach controller may share the same resources, such as processor, memoryspace, storage unit, etc. Under this configuration, the combinedcontroller (120C, 120F) may further process the print data 703 in step710 if the print data 703 is not already in the format or languagerequired by printer engine. The combined controller (120C, 120F) mayneed to perform interpretation, decoding and rasterization operations inaddition to converting the input print data 703 (in one or more ofintermediate formats described previously) to the required format,language or instruction of the printer engine 908 for output. If theprint data 703 is already in the final format, language or instructionunderstood by the printer engine 908, the combined controller (120C,120F) might simply buffer the print data 703 and send it as needed tothe printer engine 908 for output.

[0185] Similarly, other than processing print data, the outputcontroller 120 and the combined controller (120C, 120F) may performfunctions such as payment processing (if service charge applies); printjob management, queuing, spooling, etc.

[0186] FIGS. 8A-8E show a series of exemplary graphical user interfaces(GUIs) rendered at different times on a display screen 800 of aninformation apparatus 100 to illustrate one implementation of the outputprocess 501 described with reference to FIG. 5. The user interfacesshown can be implemented in an information apparatus 100 with or withoutan operating system. The user interfaces illustrated here are only oneexample, and other user interfaces may also be implemented within thescope of the present invention.

[0187] Referring to FIG. 8A, a user receives an email on an informationapparatus 100 using an email application. Functions available to theuser are displayed at the bottom of the screen 800. Printing is one ofthe functions displayed by the “print” function control or icon 802. Theuser may invoke such functions by selecting the icons displayed. Theuser can make the selection by using, for example, any one orcombination of a keyboard, keypad, mouse, stylus, soft keys, pushbuttons, software command, touch sensitive screen, etc. The user mayalso make such selection by, for example, a pull down menu,voice-activated command, etc.

[0188] As the user selects “Print” function control 802, the outputprocess described with reference to FIG. 5 is invoked. As a result, theuser is notified of all the printers, if any, available that can takethe print or output job. If no available printers are detected, the usermay also be notified and provided with alternatives as described withreference to steps 506 and 508 of FIG. 5.

[0189] Assume in this example that three printers are found available asthe result of discovery process step 502. In FIG. 8B, screen 810 informsthe user of the make and model of each available printer. The user mayobtain further information on each available printer by, for example,selecting a “more information” control or arrow sign 814 displayed afterthe name of each printer. Further information provided here may include,without limitation, service options offered by each printer, quality ofservices provided, service charge if any, acceptable payment method, andwhether the use of such printer is restricted to a certain group.

[0190] If a printer is restricted to be used by a certain group, theuser may be required to provide identification information before beingable to select this printer. For example, to use a printer placed in thehallway of a company office building, a user may have to identifyhimself or herself as an employee of such company. Password, personalidentification number or I.D. number of the information apparatus 100may be required for authorization purposes. The identificationinformation may be provided by the user manually or detected by theoutput controller 120 or output device 140 automatically. If the printerprovides fee-based service, certain payment process steps may berequired additionally, which are not shown in the figures forsimplicity.

[0191] After the user has successfully selected the desired outputdevice or devices in the service negotiation process 514, theinformation apparatus 100 may communicate with output controller 120 toidentify data or software components, if any, which need to be uploadedto the information apparatus 100 to enable printing. The output manager308 residing in the information apparatus 100 may participate in,coordinate and manage the communications between applications in theinformation apparatus 100 and the output controller 120.

[0192] In this particular example, as illustrated in FIG. 8C, thecommunication between the information apparatus 100 and the outputcontroller 120 has identified that a printer driver needs to be uploadedas displayed on screen 820. Options are provided to the user as whetheror not to continue the process. This information and selection areoptional as the process may be implemented transparently to the user.Other optional information that the information apparatus 100 mayprovide to the user includes, for example, the estimation of time neededfor the uploading.

[0193] The above description gives an example of a printer drivercomponent that may need to be uploaded. Other components andcombinations may also be possible; this may include for example apartial print driver, data, software components, or a user interface. Apartial print driver or component may for example include only devicedependent software components and data specific to an output device.Device independent code and data of the device driver may have beenpreviously installed in the information apparatus 100 and therefore neednot be uploaded. It is also possible that no components need to beuploaded because all the components needed for printing to the selectedoutput device 140 may already reside in the information apparatus 100.Assuming in this example that the user agrees to upload the driver, FIG.8D illustrates an example of an interface when synchronization process516 proceeds.

[0194] When the synchronization process 516 is completed, screen 840 isdisplayed to the user as shown in FIG. 8E. The user may use screen 840to select a preference such as page range, number of copies, number ofcards per page, color or grayscale, page layout parameters, etc.Selecting “property” control or button 842, the user may be providedwith more device-dependent options such as color and tone adjustments,halftoning parameters, duplexing, resolution, watermarking, etc.

[0195] Steps 518 and 520 can proceed after the user finishes selectingany preferences. The user, after selecting the confirmation control or“OK” button 844 shown in FIG. 8E, waits to obtain the printout or otheroutput from the printer or printers 140 selected. FIG. 8F illustrates aninterface for the printing process of steps 518 and 520.

[0196] After the print job has been successfully finished, the user maybe provided with an option to keep or delete the printer driver orsoftware components or synchronized device dependent data, which wasuploaded to information apparatus 100 in the earlier steps. This optionmay be beneficial to those mobile information apparatuses 100 withlimited memory space or a casual user of that particular output device140. A user who frequently uses a selected printer may wish to keep theprinter driver, software components, or data installed so thatsynchronization for uploading components may be skipped when the printeris used again.

[0197] FIGS. 8A-8E illustrate only one example of the output processshown in FIG. 5. While the above descriptions contain much specificity,these should not be construed as limitations on the scope of theinvention, but rather as exemplary embodiment thereof. Other userinterfaces and embodiments may also be implemented. The process may alsobe implemented with more or fewer steps. As an example, securityverification, authentication, and payment processing may be added tosteps illustrated in FIGS. 8A-8E. As another example, the stepillustrated by FIG. 8C may be skipped as the loading process proceedsautomatically when the user selects a desired printer or printers. Theseand other possible variations do not however depart from the scope ofpresent invention.

[0198] Accordingly, the scope of the invention should be determined notby the embodiments illustrated, but by the appended claims and theirlegal equivalents.

[0199] Having described and illustrated the principles of our inventionwith reference to an illustrated embodiment, it will be recognized thatthe illustrated embodiment can be modified in arrangement and detailwithout departing from such principles. In view of the many possibleembodiments to which the principles of our invention may be applied, itshould be recognized that the detailed embodiments are illustrative onlyand should not be taken as limiting the scope of our invention. Rather,I claim as my invention all such embodiments as may come within thescope and spirit of the following claims and equivalents thereto.

We claim:
 1. A method of rendering at an output device data content thatis accessible from an information apparatus, the output device includingan output engine, the method comprising: receiving at the informationapparatus information relating to the output device; establishing achannel of communication between the information apparatus and theoutput device; obtaining at the information apparatus one or moredevice-dependent components relating to the output device; generating atthe information apparatus device-dependent output data employing atleast in part one device-dependent component; and transmitting thedevice-dependent output data via the communication channel to the outputdevice for rendering.
 2. The method of claim 1 in which the channel ofcommunication includes a wireless communication channel.
 3. The methodof claim 1 in which the information apparatus includes one of a mobilecomputing device, a pervasive device, a digital camera, and a personalcomputer.
 4. The method of claim 1 in which the output device includesone of a printing device, a display device, and an audio output device.5. The method of claim 1 in which the device dependent output dataincludes compressed data.
 6. The method of claim 1 in which theinformation relating to the output device is obtained from the outputdevice.
 7. The method of claim 1 in which the one or moredevice-dependent components include software code.
 8. The method ofclaim 1 in which the one or more device-dependent components include asoftware application.
 9. The method of claim 1 in which the one or moredevice-dependent components include at least part of a device driver.10. The method of claim 1 in which the one or more device-dependentcomponents includes information relating to the output device.
 11. Themethod of claim 1 in which the device dependent output data is receivedby an output controller before being delivered to the selected outputdevice.
 12. The method of claim 11 in which the output controller isinternal to the output device.
 13. The method of claim 11 in which theoutput controller is one of a server, an external controller and a dataaccess point.
 14. The method of claim 11 in which the output controllerperforms, at least partially, raster image processing on the datacontent.
 15. The method of claim 11 in which the output device includesan output engine, the method further including converting the outputdata content into a form compatible with the output engine.
 16. Themethod of claim 11 in which the output device is a printer and includesa printer controller, the method further including converting the outputdata into a form compatible with the printer controller.
 17. The methodof claim 1 further comprising providing payment information from theinformation apparatus to pay for the rendering provided by the outputdevice.
 18. A method of rendering data content that is accessible froman information apparatus, comprising: selecting an available outputdevice having a device-specific output engine; automatically uploadingto the information apparatus one or more device-dependent componentscorresponding to the output device; generating at the informationapparatus device dependent output data in accordance with the one ormore device-dependent components; and transmitting the output data fromthe information apparatus to the output device for rendering.
 19. Themethod of claim 18 further comprising providing payment information fromthe information apparatus to pay for the rendering provided by theoutput device.
 20. The method of claim 18 in which the uploading of theone or more device dependent components includes wireless communication.21. The method of claim 18 in which the information apparatus includesone of a mobile computing device, a pervasive device, a digital camera,and a personal computer.
 22. The method of claim 18 in which the outputdevice includes one of a printing device, a display device, and an audiooutput device.
 23. The method of claim 18 in which the device dependentoutput data includes compressed data.
 24. The method of claim 18 inwhich the selecting of an available output device involves user input.25. The method of claim 18 in which the selecting of an available outputdevice includes the information apparatus discovering the outputdevices.
 26. The method of claim 18 in which the one or more devicedependent components include software code.
 27. The method of claim 18in which the one or more device dependent components include a softwareapplication.
 28. The method of claim 18 in which the output device is aprinter and the one or more device-dependent components include at leastpart of a printer driver.
 29. The method of claim 18 in which the one ormore device dependent components relate to one or more of a devicedriver, a printer driver, an output driver, and a user interface. 30.The method of claim 18 in which the device dependent components includeinformation characterizing the output device.
 31. The method of claim 18in which the information characterizing the output device includes oneor more of a make identifier, a model identifier, an output device typeidentifier, an output data format identifier, and an output deviceidentifier.
 32. The method of claim 18 in which the device dependentoutput data is received by an output controller before being deliveredto the selected output device.
 33. The method of claim 32 in which theoutput controller is internal to the output device.
 34. The method ofclaim 32 in which the output controller is one of a server, an externalcontroller and a data access point.
 35. The method of claim 32 in whichthe output controller performs, at least a partially, raster imageprocessing on the data content.
 36. The method of claim 32 furtherincluding converting the output data content into a form compatible tothe output engine.
 37. The method of claim 32 in which the output deviceis a printer having a printer controller and the method further includesconverting the output data into a form compatible with the printercontroller.
 38. In a computer readable medium, software for renderingdata content that is accessible from an information apparatus,comprising: software for selecting an available output device having adevice-specific output engine; software for automatically uploading tothe information apparatus a device-dependent component corresponding tothe output device; software for generating at the information apparatusdevice-specific output data in accordance with the device-dependentcomponent; and software for transmitting the output data from theinformation apparatus to the output device for rendering.
 39. The mediumof claim 38 further comprising software for providing paymentinformation from the information apparatus to pay for the renderingprovided by the output device.
 40. A method of rendering data contentthat is accessible from an information apparatus, comprising:identifying a first available output device from among one or moreoutput devices that can be accessed by the information apparatus;establishing bi-directional communication between the informationapparatus and the first available output device; receiving from thefirst available output device information regarding a feature of thefirst available output device; determining from the information whetherthe feature of the first available output device meets a predefinedcriterion for rendering the data content; and transmitting the datacontent to the first available output device if the feature meets thepredefined criterion.
 41. The method of claim 40 in which it isdetermined that the feature of the first available output device doesnot meet the predefined criterion, the method further comprising:identifying a second available output device from among one or moreoutput devices that can be accessed by the information apparatus;establishing bi-directional communication between the informationapparatus and the second available output device; receiving from thesecond available output device information regarding a feature of thesecond available output device; determining from the information whetherthe feature of the second available output device meets the predefinedcriterion for rendering the data content; and transmitting the datacontent to the second available output device if the feature meets thepredefined criterion.
 42. The method of claim 40 in which it isdetermined that the feature of the first available output device doesnot meet the predefined criterion, the method further comprisingproviding at the information apparatus a user indication that the firstavailable output device does not meet the predefined criterion.
 43. Themethod of claim 42 further comprising providing at the informationapparatus a user indication of a user-selectable option to cancel therendering of the data content.
 44. The method of claim 42 furthercomprising providing at the information apparatus a user indication of auser-selectable option to attempt to identify an available output devicewith a feature that meets the predefined criterion.
 45. The method ofclaim 40 in which the bi-directional communication includes a wirelesscommunication.
 46. The method of claim 40 in which the identifying of anavailable output device involves user input.
 47. The method of claim 40in which the identifying of an available output device involves adiscovery process.
 48. The method of claim 40 in which the featureincludes information characterizing the output device.
 49. The method ofclaim 40 in which the feature includes a device dependent parameterrelated to the output device.
 50. The method of claim 40 in which thefeature includes information about a service provided by the outputdevice.
 51. The method of claim 50 in which the information about theservice provided by the output device includes one or more of price,quality of service, and availability.
 52. The method of claim 40 inwhich the predefined criterion includes user input.
 53. The method ofclaim 40 in which the predefined criterion includes a predetermineddefault parameter stored in the information apparatus.
 54. The method ofclaim 40 in which the predefined criterion includes a predefinedalgorithm stored in the information apparatus.
 55. The method of claim40 further comprising processing the data content to a form that iscompatible with the output device before transmitting the data contentto the output device.
 56. The method of claim 40 in which theinformation apparatus includes one of a mobile computing device, apervasive device, a digital camera, and a personal computer.
 57. Themethod of claim 40 in which the output device includes one of a printingdevice, a display device, and an audio output device.
 58. The method ofclaim 40 in which the transmitted data content includes compressed data.59. In a computer readable medium, software for rendering data contentthat is accessible from an information apparatus, comprising: softwarefor identifying a first available output device from among one or moreoutput devices that can be accessed by the information apparatus;software for establishing communication between the informationapparatus and the first available output device; software for receivingfrom the first available output device information regarding a featureof the first available output device; software for determining from theinformation whether the feature of the first available output devicemeets a predefined criterion for rendering the data content; andsoftware for transmitting the data content to the first available outputdevice if the feature meets the predefined criterion.
 60. The medium ofclaim 59 in which it is determined that the feature of the firstavailable output device does not meet the predefined criterion, themedium further comprising: software for identifying a second availableoutput device from among one or more output devices that can be accessedby the information apparatus; software for establishing communicationbetween the information apparatus and the second available outputdevice; software for receiving from the second available output deviceinformation regarding a feature of the second available output device;software for determining from the information whether the feature of thesecond available output device meets the predefined criterion forrendering the data content; and software for transmitting the datacontent to the second available output device if the feature meets thepredefined criterion.
 61. The medium of claim 59 in which it isdetermined that the feature of the first available output device doesnot meet the predefined criterion, the medium further comprisingsoftware for providing at the information apparatus a user indicationthat the first available output device does not meet the predefinedcriterion.
 62. The medium of claim 61 further comprising software forproviding at the information apparatus a user indication of auser-selectable option to cancel the rendering of the data content. 63.The medium of claim 61 further comprising software for providing at theinformation apparatus a user indication of a user-selectable option toattempt to identify an available output device with a feature that meetsthe predefined criterion.
 64. A method of rendering data content that isaccessible from an information apparatus, comprising: searching for afirst available output device from among one or more output devices thatcan be accessed by the information apparatus; upon discovery of a firstavailable output device, establishing bi-directional communicationbetween the information apparatus and the first available output device;receiving from the first available output device information regarding afeature of the first available output device; determining from theinformation whether the feature of the first available output devicemeets a predefined criterion for rendering the data content; andtransmitting the data content to the first available output device ifthe feature meets the predefined criterion.
 65. The method of claim 64in which a first available output device is not discovered in thesearch, the method further comprising providing at the informationapparatus a user indication that a first available output device has notbeen discovered.
 66. The method of claim 64 further comprising providingat the information apparatus a user indication of a user-selectableoption to cancel the rendering of the data content.
 67. The method ofclaim 64 further comprising providing at the information apparatus auser indication of a user-selectable option to again attempt to identifyan available output device.
 68. The method of claim 64 in which thebi-directional communication includes a wireless communication.
 69. Themethod of claim 64 in which the searching for a first available outputdevice involves user input.
 70. The method of claim 64 in which thefeature of the first available output device includes a device dependentparameter related to the output device.
 71. The method of claim 64 inwhich the feature of the first available output device includes one ormore of price, quality of service, and availability.
 72. The method ofclaim 64 in which the predefined criterion includes user input.
 73. Themethod of claim 64 in which the predefined criterion includes apredetermined default parameter stored in the information apparatus. 74.The method of claim 64 in which the predefined criterion includes apredefined algorithm stored in the information apparatus.
 75. The methodof claim 64 further comprising processing the data content to a formthat is compatible with the output device before transmitting the datacontent to the first available output device.
 76. In a computer readablemedium, software for rendering data content that is accessible from aninformation apparatus, comprising: software for searching for a firstavailable output device from among one or more output devices that canbe accessed by the information apparatus; software for establishingbi-directional communication between the information apparatus and thefirst available output device upon discovery of a first available outputdevice; software for receiving from the first available output deviceinformation regarding a feature of the first available output device;software for determining from the information whether the feature of thefirst available output device meets a predefined criterion for renderingthe data content; and software for transmitting the data content to thefirst available output device if the feature meets the predefinedcriterion.
 77. The medium of claim 76 in which a first available outputdevice is not discovered in the search, the medium further comprisingsoftware for providing at the information apparatus a user indicationthat a first available output device has not been discovered.
 78. Amethod of rendering data content that is accessible from an informationapparatus, comprising: discovering one or more available output devicesthat are available to render the data content; generating at theinformation apparatus a list of the one or more available output devicesthat are discovered and specifying at least one characteristic of eachof the available output devices; determining from the characteristics ofthe one or more available output devices which of them meets apredefined criterion for rendering the data content; and establishingcommunication with each of the one or more available output devices thatmeets the predefined criterion.
 79. The method of claim 78 in whichdetermining which of the one or more available output devices meet thepredefined criterion is performed automatically by the informationapparatus.
 80. The method of claim 78 in which determining which of theone or more available output devices meet the predefined criterion isperformed by a user.
 81. The method of claim 78 in which the discoveringof the one or more available output device includes a wirelesscommunication.
 82. The method of claim 78 in which the predefinedcriterion includes one or more of price, quality of service, andavailability.
 83. The method of claim 78 in which the predefinedcriterion includes user input.
 84. The method of claim 78 in which thepredefined criterion includes a predefined algorithm stored in theinformation apparatus.
 85. In a computer readable medium, software forrendering data content that is accessible from an information apparatus,comprising: software for discovering one or more available outputdevices that are available to render the data content; software forgenerating at the information apparatus a list of the one or moreavailable output devices that are discovered and specifying at least onecharacteristic of each of the available output devices; software fordetermining from the characteristics of the one or more available outputdevices which of them meets a predefined criterion for rendering thedata content; and software for establishing communication with each ofthe one or more available output devices that meets the predefinedcriterion.
 86. The medium of claim 85 in which the software fordetermining which of the one or more available output devices meet thepredefined criterion is performed automatically by the informationapparatus.
 87. The medium of claim 85 in which the software fordetermining which of the one or more available output devices meet thepredefined criterion is performed by a user.